import os
import sys
import importlib
from fastapi import FastAPI

# 将项目根目录加入 Python 路径
project_root = os.path.dirname(os.path.abspath(__file__))
sys.path.append(project_root)

app = FastAPI()

# 动态导入 routers 包下的所有路由
def auto_include_routers(root_dir: str, base_package: str):
    """
    自动导入所有子目录中的路由
    :param root_dir: 要遍历的根目录（文件系统路径）
    :param base_package: 根目录对应的 Python 包名（如 "routers"）
    """
    for root, _, files in os.walk(root_dir):
        # 将文件系统路径转换为 Python 包路径（例如：routers/business_license -> routers.business_license）
        rel_path = os.path.relpath(root, project_root)
        package_path = rel_path.replace(os.sep, ".")

        for file in files:
            if file.endswith(".py") and file != "__init__.py":
                module_name = f"{package_path}.{file[:-3]}"  # 去掉 .py 后缀
                try:
                    module = importlib.import_module(module_name)
                    if hasattr(module, "router"):
                        app.include_router(module.router)
                        print(f"✅ 成功导入路由: {module_name}")
                    else:
                        print(f"⚠️ 模块 {module_name} 中没有找到 router 变量")
                except Exception as e:
                    print(f"❌ 导入失败: {module_name}，错误: {e}")


# 自动导入 routers 目录及其子目录下的所有路由
routers_dir = os.path.join(project_root, "routers")
auto_include_routers(routers_dir, base_package="routers")

# # 只导入 business_license 目录
# business_license_dir = os.path.join(routers_dir, "business_license")
# auto_include_routers(business_license_dir, base_package="routers.business_license")